import { FormSchema } from '@/components/Form';
import { ModalProps } from '@/components/AdVxeModal';
import { FormModeEnum } from '@/enums/formEnum';
import type { AdFetchParams } from './adTable';

/** 高级详情表单属性 */
export interface AdDetailFormProps extends ModalProps {
  /** 表单标识 */
  formIndex: string;
  /** 主键字段 */
  keyField: string;

  /** 表单架构 */
  formSchema?: FormSchema[];
  /** 显示表单架构信息 */
  showFormSchemaInfo?: boolean;
  /** 扩展 form 组件，增加 label 宽度，表单内所有组件适用，可以单独在某个项覆盖或者禁用 */
  labelWidth?: number | string;
  /** label 布局 */
  labelAlign?: 'left' | 'right';
  /** 紧凑类型表单，减少 margin-bottom */
  compact?: boolean;
  /** 向表单内所有组件传递 size 参数,自定义组件需自行实现 size 接收 */
  formSize?: 'default' | 'small' | 'large';
  /** 向表单内所有组件传递 disabled 属性，自定义组件需自行实现 disabled 接收 */
  disabled?: boolean;
  /** 实体新增接口请求对象 */
  createApi?: (params: any[]) => Promise<any>;
  /** 实体更新接口请求对象 */
  updateApi?: (params: any[]) => Promise<any>;
  /** 实体删除接口请求对象 */
  deleteApi?: (params: any[]) => Promise<any>;
  /** 关闭回调，返回true关闭窗体 */
  closeFn?: (formMode: FormModeEnum, record: any) => Promise<boolean>;
  /** 提交回调，返回true关闭窗体 */
  submitFn?: (formMode: FormModeEnum, record: any) => Promise<boolean>;
  /** 重新加载表格数据函数 */
  reloadFn?: (opt?: AdFetchParams) => Promise<void>;
}
